### プロジェクト21 音声制御LED **1. 説明** 音声制御LEDは、音を検出してLEDの明るさを制御する装置で、Arduinoボードといくつかの部品で構成されています。マイクロフォンなど複数のセンサーに接続可能です。音を電圧信号に変換し、その信号をArduinoが受け取ってLEDの点灯・消灯を制御します。 **2. 動作原理** ![](media/B54.png) 音を検出すると、マイクロフォン内のエレクトレットフィルムが振動し、静電容量が変化して微小な電圧変化が発生します。 次に、LM386チップを使って検出した音を最大200倍まで増幅する適切な回路を構築します。増幅率は可変抵抗で調整可能で、時計回りに回すと増幅率が大きくなります。 **3. 配線図** ![](media/B55.png) **4. テストコード** 「Sound」カテゴリの「値を読む」ブロックを見つけ、読み取った音の値をシリアルポートに表示します。ブロックは以下のように組み立ててください。音センサー使用時はdelayを入れないよう注意してください。 ![](media/B56.png) **5. テスト結果** 配線を接続しコードをアップロードした後、シリアルモニターを開きボーレートを9600に設定すると、アナログ値が表示されます。 ![](media/B57.png) **6. 拡張コード** よく見かける廊下のライトは音声制御ライトの一種で、同時にフォトレジスターも含まれています。 これとは異なり、ここではLEDが音だけに影響されるモデルを作成します。アナログ音量が100を超えると、LEDが2秒間点灯し、その後消灯します。 **フローチャート:** ![](media/B58.png) **配線図:** ![](media/B59.png) **コード:** 1. 基本ブロックを2つドラッグします。 2. 「if else」ブロックをドラッグし、六角形には「item>100」ブロックを入れます。値は「sound IO33の値を読む」に設定します。条件が満たされた場合、IO25ピンでLEDをHIGHレベルにし2秒遅延させます。そうでなければ、同じピンでLOWレベルを出力し遅延はありません。 ![](media/B60.png) **完成コード:** ![](media/B61.png) **7. コード説明** 関連ピンを設定して音の値を読み取ります。 ![](media/B62.png) ### プロジェクト22 ノイズメーター **1. 説明** Arduinoノイズメーターは音の信号を一連のドットに変換し、それをドットマトリックスにパターン表示します。 **2. 配線図** ![](media/B63.png) **3. テストコード** 1. 基本ブロックをドラッグしディスプレイを初期化します。CSピンをIO15に、明るさを3に設定します。次に変数ブロックを追加し、型をint、名前を「item」、初期値を0に設定します。 2. 変数ブロックを追加し名前を「item」にします。map関数を使い、読み取った音の値の範囲0-4095を0-7に変換します。ただし音の最大値は800と仮定します。 ![](media/B64.png) 3. ディスプレイをクリアします。 4. 条件をプログラムします。変数itemが-1より大きければ、ドットマトリックスは(x0:0 y0:0 x1:1 y1:0)を赤色で表示します。 ![](media/B65.png) 5. ステップ4を繰り返しますが、判定はitemが0より大きいかどうかです。条件を満たせば(x0:1 y0:0 x1:1 y1:1)のドットが点灯します。同様に以下の座標を参照してコードブロックを構築します。 6. 最後にディスプレイを更新します。 **参照座標:** ![](media/B66.png) ![](media/B67.png) **完成コード:** ![](media/B68.png) **4. テスト結果** 配線を接続しコードをアップロードすると、ノイズレベルがドットマトリックスに表示されます。以下のように表示されます。